草庐IT

java - 在测试中模拟 CompletionException

全部标签

javascript - 如何测试 Node 数据分块功能

我正在开发一个使用Node的项目,我们正在努力实现100%的功能覆盖。这是我们唯一没有测试过的函数,它在另一个函数中。varuserInput="";req.on("data",function(data){userInput+=data;});你如何着手测试这个功能?我们尝试从另一个文件导出函数,但没有成功。我应该提一下,我们正在使用磁带作为测试模块。 最佳答案 您需要根据请求触发此“数据”事件。这样这个回调就会被调用。例如,假设您的测试中有req,您可以做类似的事情(这是Mocha):req.trigger('data','sa

javascript - 以不推荐使用的方式模拟键盘按下?

我正在寻找一种模拟键盘按下的方法(如标题所示)。我环顾四周,主要发现了这两个SO问题:Isitpossibletosimulatekeypresseventsprogrammatically?Simulatekeypresswithoutjquery这些问题是它们都使用KeyboardEvent.initKeyboardEvent()事件,根据MDN它已被弃用。有没有不推荐使用的功能的不同方法来完成同样的事情?我想知道这一点,因为我正在使用Chrome的TamperMonkey扩展程序为YouTube创建一个脚本。此脚本将在按下[space]时触发K。K是YouTube的切换播放/暂停

javascript - 仅在闭包中定义的模拟/ stub 对象

首先,为了测试我的库,我使用了Mocha和Chai,但有时我可能也需要Sinon。这是图书馆:importServicefrom'service';//athird-partymoduleoutofmycontrolconstservice=Service(...);classMyLib{...uses`service`inabunchofdifferentways......service.put(foo)......service.get(bar)...}exportdefaultMyLib;这基本上是测试文件:importMyLibfrom'../my-lib.js';descr

javascript - Chrome 移动模拟器中的 ReactJS 升级导致触摸事件中断

我最近从React0.10升级到了React0.14。最初我收到一个错误,提示React.initializeTouchEvents不是一个函数。我读了一些文档,声称在最新版本的React中不需要这种初始化,所以我取消了它。但是,现在我的项目中没有注册任何触摸事件。我需要做什么才能让它们重新工作?下面我包含了一些我编写的简单测试代码来尝试解决这个问题。目前根本没有注册任何触摸事件。我的主要js文件:/**@jsxReact.DOM*/varReact=require('react');varReactDOM=require('react-dom');varTestButton=requ

javascript - 在 Reactjs 中测试窗口按键事件

我正在编写的组件需要根据是否按下ctrl来更改其行为。我使用了window.onkeydown事件,但是ReactTestUtils中的Simulate不允许我针对window发送事件。我也尝试过window.dispatchEvent(newKeyboardEvent('keydown',{keyCode:17}));但mocha/node无法识别KeyboardEvent。有没有办法使用ReactTestUtils测试window.onkeydown?如果没有,有没有更好的方法在节点的摩卡中做到这一点?下面是一些代码来说明这个问题:describe('OnKeydown',()=>

javascript - 为什么我的 jest 测试在本地运行,而不是在 Travis 上运行?

我有一个使用ES6以及import和export的简单javascript项目。这是我的.babelrc文件{"env":{"es":{"presets":[["env",{"targets":{"browsers":["last2versions"],"node":"current"},"modules":false}]],"ignore":["**/*.test.js","**/tests/*"]},"test":{"presets":["env"]},"cjs":{"presets":[["env",{"targets":{"browsers":["last2versions"]

javascript - 在 webpack 捆绑库上模拟 fbasyncInit 行为

我正在使用webpack构建一个针对浏览器的库。我真的很想在不手动修改捆绑库的情况下复制fbasyncinit行为。webpack是否提供了在加载库本身后调用函数的方法?或者是否有另一个允许这样做的替代bundler?对于那些不知道的人,window.fbasyncinit是facebooksdk在完成加载时调用的函数,因此您编写函数来初始化facebooksdk的东西。 最佳答案 根据您的设置,您可能希望将您的库设为外部和lazyload它进入目标应用程序。简而言之,这意味着您的库与应用程序一起存在,但实际上不会在初始化时加载。然

javascript - 如何近似Java的Character.isLetterOrDigit()来识别Javascript中的非英文字母、数字?

在Javascript中,是否有一种方法(在国际化后仍然存在)来确定字符是字母还是数字?这将正确地将Ä、ç识别为字母和非英语数字(我不打算将其作为示例查找)!在Java中,Character类有一些静态方法.isLetter()、.isDigit()、.isLetterOrDigit(),用于以国际通用的方式确定字符实际上是字母还是数字。这比像这样的代码要好//thisisnotright,butcommonandeasyif((ch>='A'&&ch='a'&&ch因为它会拾取非英文字母。我认为C#具有类似的功能...当然,在最坏的情况下,我可以将字符串发送回服务器进行检查,但这很痛

javascript - 如果Object.prototype被修改,如何测试对象是否为 "isEmpty()"?

我想测试一个对象是否为空:{}。通常使用以下内容:functionisEmpty(obj){for(varpropinobj){if(obj.hasOwnProperty(prop))returnfalse;}returntrue;}但假设Object原型(prototype)被添加到如下:Object.prototype.Foo="bar";测试:alert(isEmpty({}));//trueObject.prototype.Foo="bar";alert({}.Foo);//"bar"ohno...alert(isEmpty({}));//true...**huh?!**我试图

javascript - Jasmine - 如何模拟 history.pushState 和假事件发射?

在history.pushState的帮助下,我正在编写一个支持浏览器导航的库并且还捕获了popstateevent在浏览器中进行导航时进行通信。因为我正在尝试写Jasmine测试这个库,我想知道如何模拟history.pushState并且还伪造了popstate的发射来自window的信号?以下代码片段应该可以说明问题:库代码:varlib=(function(){functionnavigate(path){history.pushState(null,null,path);}functiononPopState(event){if(lib.callback){lib.callb